package com.youzan.open.sdk.gen.v1_0_0.model;

import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Maps;
import com.google.common.collect.Multimap;
import com.youzan.open.sdk.model.APIParams;
import com.youzan.open.sdk.model.ByteWrapper;
import com.youzan.open.sdk.model.FileParams;
import java.util.List;
import java.util.Map;
import java.util.Date;

public class YouzanFenxiaoTradeBuyerRefundApplyUpdateParams implements APIParams, FileParams  {

    /**
     * 举证信息附件
     */
    private String attachment;
    /**
     * 买家手机号
     */
    private String buyerPhone;
    /**
     * 诉求: 仅退款|退货退款|其他
     */
    private Long demand;
    /**
     * 扩展信息
     */
    private String extension;
    /**
     * 操作人角色
system|buyer|seller|inside
     */
    private String operatorRole;
    /**
     * 退款原因
     */
    private Long reason;
    /**
     * 退款金额
     */
    private Long refundFee;
    /**
     * 退款单
     */
    private String refundId;
    /**
     * 退款修改描述
     */
    private String remark;
    /**
     * 发起方备注信息
     */
    private String sourceRemark;
    /**
     * 版本号
     */
    private Long version;

    public void setAttachment(String attachment) {
        this.attachment = attachment;
    }

    public String getAttachment() {
        return this.attachment;
    }

    public void setBuyerPhone(String buyerPhone) {
        this.buyerPhone = buyerPhone;
    }

    public String getBuyerPhone() {
        return this.buyerPhone;
    }

    public void setDemand(Long demand) {
        this.demand = demand;
    }

    public Long getDemand() {
        return this.demand;
    }

    public void setExtension(String extension) {
        this.extension = extension;
    }

    public String getExtension() {
        return this.extension;
    }

    public void setOperatorRole(String operatorRole) {
        this.operatorRole = operatorRole;
    }

    public String getOperatorRole() {
        return this.operatorRole;
    }

    public void setReason(Long reason) {
        this.reason = reason;
    }

    public Long getReason() {
        return this.reason;
    }

    public void setRefundFee(Long refundFee) {
        this.refundFee = refundFee;
    }

    public Long getRefundFee() {
        return this.refundFee;
    }

    public void setRefundId(String refundId) {
        this.refundId = refundId;
    }

    public String getRefundId() {
        return this.refundId;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public String getRemark() {
        return this.remark;
    }

    public void setSourceRemark(String sourceRemark) {
        this.sourceRemark = sourceRemark;
    }

    public String getSourceRemark() {
        return this.sourceRemark;
    }

    public void setVersion(Long version) {
        this.version = version;
    }

    public Long getVersion() {
        return this.version;
    }


    public Map<String, Object> toParams() {
        Map<String, Object> params = Maps.newHashMap();
        if (attachment != null) {
            params.put("attachment", attachment);
        }
        if (buyerPhone != null) {
            params.put("buyer_phone", buyerPhone);
        }
        if (demand != null) {
            params.put("demand", demand);
        }
        if (extension != null) {
            params.put("extension", extension);
        }
        if (operatorRole != null) {
            params.put("operator_role", operatorRole);
        }
        if (reason != null) {
            params.put("reason", reason);
        }
        if (refundFee != null) {
            params.put("refund_fee", refundFee);
        }
        if (refundId != null) {
            params.put("refund_id", refundId);
        }
        if (remark != null) {
            params.put("remark", remark);
        }
        if (sourceRemark != null) {
            params.put("source_remark", sourceRemark);
        }
        if (version != null) {
            params.put("version", version);
        }
        return params;
    }

    public Multimap<String, ByteWrapper> toFileParams() {
        Multimap<String, ByteWrapper> params = ArrayListMultimap.create();

            return params;
    }


}